﻿--#### 变量

--1. 为赵云此人进行开户开卡操作，赵云身份证：420107199904054233
use BankTest

select * from AccountInfo
select * from BankCard
declare @name varchar(50) = '赵云',@accCode varchar(50) = '420107199904054233'
insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
values(@accCode,'18815974623',@name,getdate())



--2. 需要求出张飞的银行卡卡号和余额，张飞身份证：420107199602034138  （1.使用连接查询，2.使用变量）
declare @cardno varchar(50),@money money
select @cardno = CardNo,@money = CardMoney from AccountInfo a
join BankCard b on a.AccountId = b.AccountId
where AccountCode = '420107199602034138'
print '银行卡卡号为'+ @cardno + ',余额为' + cast(@money as varchar(50))


--#### 逻辑控制

--##### 条件分支if-else

--​	3.某用户银行卡号为“6225547854125656”，该用户执行取钱操作，取钱5000元，
--余额充足则进行取钱操作，并提示"取钱成功"，否则提示“余额不足”。
declare @money int
select @money = (select CardMoney from BankCard where CardNo = '6225547854125656')
if(@money > 5000)
begin
	select @money = (select (CardMoney-5000) from BankCard where CardNo = '6225547854125656')
	print '取钱成功,余额为' + cast(@money as varchar(50))
end
else
begin
	print '余额不足'
end



--##### 条件分支:case-when

--​	4.查询银行卡信息，将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”，
--并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户"，  
----显示列分别为卡号，身份证，姓名，余额，用户等级，银行卡状态。
select 
CardNo 卡号,
(select AccountCode from AccountInfo a where a.AccountId = b.AccountId) 身份证,
(select RealName from AccountInfo a where a.AccountId = b.AccountId) 姓名,
CardMoney 余额,
case 
	when CardState = 1 then '正常'
	when CardState = 1 then '挂失'
	when CardState = 1 then '冻结'
	else '注销'
	end as 银行卡状态,
case
	when CardMoney > 300000 then 'VIP用户'
	else '普通用户'
	end as 用户等级
from BankCard b


--##### **while**

--​	5.循环打印1-10。
declare @i int =1
while(@i <= 10)
begin 
	print @i
	set @i += 1
end

--​	6.打印99乘法表
--1*123456789 当第二段数字=9时，第一段数字加1, 1*1=1
--, @cheng varchar, @deng varchar
--set @cheng = '*'
--set @deng = '='
declare @num1 int = 1, @num2 int = 1
while(@num1 <= 9)
begin
	print cast(@num1 as varchar(50)) + '*' + cast(@num2 as varchar(50)) + '=' + cast((@num1 * @num2) as varchar(50))  
	set @num2 += 1	

	if(@num2 = 10)	
	begin 
		set @num2 = 1
		set @num1 += 1	
	end

end
